"""
列表
"""

    # 混装且允许重复，有序的，可修改
list1 = [1,1,[2,3],("巫明瑾","巫新"),{"age":"18"}]
list2 = ["list21",22]

##1.增 4  （append extend insert 直接相加）
# 区别：append 追加 ；  extend 将另外的元素逐一添加； insert指定位置插入；
list1.append("增加元素1")
print(list1)    # 末尾追加元素：[..., '增加元素1']

list1.extend([2, "其他数据容器，一批加到列表尾部", 6])
list1.extend({"name":"添加的字典1"})
print(list1) # 不管什么类型，元素挨个加进去：[..., 2, '其他数据容器，一批加到列表尾部', 6, 'name']

list33=[1,1,2,3]
list33.insert(2,"指定位置添加元素insert")

print(list33)

# 直接相加
print(list33*2) # 在最后追加


list3 = [1,1,2,2,("巫明瑾","巫新"),{"age":"18"}]
# 2.删 3 (del/pop/remove)
# 区别：pop 删除最后一个； del 根据下标删除； remove 根据元素的值删除,多个相同时默认删除第一个；
list34=[1,1,2,3]
del list34[0]
print(list34)  # 删除下标为0的元素


list34.pop()
print(list34)  # 不传参默认删除的最后一个元素
list35=[1,1,2,3]
list35.pop(-2)
print(list35)    # 删除下标为-1的元素

list3.remove(2)
print(list3)    #删除具体的元素,只删除了第一个2；

#3.改 1 （根据索引找到修改内容赋值）
list1[0] = "马"
print(list1)

# 4.查询 4 （in/not in, index, count，下标索引）
# 区别：in, not in 存在返回true;   index同字符串,区域查询返回索引值或报错 ； count 区域查询出现的个数；
print(3 in list1)   # False

print("*"*200)
list36=[1,1,2,3]
print(list36.index(1))    # 返回下标索引值0
# print(list1.index("majialu"))   # 不存在的报错 ValueError: 'majialu' is not in list

print(list1.count(1))    # 出现了2次

print(list1[0] )    # 1
print(list1[-1])    # {'age': '18'}

# 5.排序 2 （sort, reverse）
# sort 默认从小到大；reverse 逆序；
list4 = [1,2,3,2]
list4.sort(reverse=True) # 先排序再逆序 [3, 2, 2, 1] 或者使用切片 list4[::-1]
print(list4)

list4.sort()    #[2, 3, 2, 1]
print(list4)    #[1, 2, 2, 3]

# 5.统计元数量 count len
print(list1.count("马"))
print(len(list1))

# 6.清空
list1.clear()
print(list1)

#  7. 支持循环

#8.运算  （+，*，sum）
lst3 = [1,2,3]
print(sum(lst3)) # 6

print("************************************************************************************************************************")
# （1）字符串转列表 -> 1
var_str = "测试字符串ABCABC"
print(list(var_str)) # ['测', '试', '字', '符', '串', 'A', 'B', 'C', 'A', 'B', 'C']

# （2）元组转列表 -> 1
var_touple = ("测试元组",10)
print(list(var_touple)) # ['测试元组', 10]

# （3）****字典转列表 -> 4
var_dic = {"测试":"字典","name":"majialu"}
print(list(var_dic))  # ['测试', 'name'] 字典取的key值

#排序的结果都是列表；字典按照key进行排序，value丢失
print(sorted(var_dic,reverse=True))    # ['测试', 'name']

print(list(var_dic.keys()))  # ['测试', 'name'] 取出keys
print(list(var_dic.values())) # ['字典', 'majialu'] 取出values
print(list(var_dic.items())) # [('测试', '字典'), ('name', 'majialu')] # 取出键值对

# （4）集合转列表 -> 1
var_set = {"测试集合",10,1,10}
print(list(var_set))  # [1, '测试集合', 10] 去重且无序

